import { defineConfig, loadEnv } from 'vite'
import { resolve } from "path";
import vue from '@vitejs/plugin-vue';

// https://vitejs.dev/config/
// 引入插件
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
export default defineConfig(({command, mode}) => {
  //参数mode为开放模式或生产模式
  const env = loadEnv(mode, process.cwd())
  // console.log(env)
  return {
    base: env.VITE_APP_BASE_URL || '/',
    plugins: [
        vue(),
        createSvgIconsPlugin({
            iconDirs: [resolve(process.cwd(), 'src/assets/icons')],
            symbolId: 'icon-[dir]-[name]',
        })
    ],
    resolve: {
      alias: {
        // 配置别名
        "@": resolve(__dirname, '.', "src"),
        "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js"
      }
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@use "@/styles/element/index.scss" as *;`,
        },
      },
    },
    define: {
      'process.env.VITE_APP_BASE_API':JSON.stringify(env.VITE_APP_BASE_API),
      __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'true'
    },
    build: {
      rollupOptions: {
        output:{//配置这个是让不同类型文件放在不同文件夹，不会显得太乱
          chunkFileNames: 'js/[name]-[hash].js',
          entryFileNames: 'js/[name]-[hash].js',
          assetFileNames: '[ext]/[name]-[hash].[ext]',
          manualChunks(id) { //静态资源分拆打包
            if (id.includes('node_modules')) {
              return id.toString().split('node_modules/')[1].split('/')[0].toString();
            }
          }
        }
      },
      outDir: 'dist_crm', // 打包构建输出路径，默认 dist ，如果路径存在，构建之前会被删除
    },
    emptyOutDir: true,//打包前先清空原有打包文件
    proxy: { // 本地开发环境通过代理实现跨域，生产环境使用 nginx 转发
      '/crm': {
        target: 'https://worktest.jinghua.org', // 后端服务实际地址
        changeOrigin: true,
        rewrite: path => path.replace(/^\/crm/, '')
      }
    },
    server: {
      open: false, // 自动启动浏览器
      host: "0.0.0.0", // localhost
      port: 9527, // 端口号
      https: false,
      hmr: { overlay: false },
      strictPort: true, // 若端口已被占用则会直接退出
      proxy: {
        '/crm': {
          target: loadEnv(mode, process.cwd()).VITE_APP_SERVER_URL, // 后端服务实际地址
          changeOrigin: true, //开启代理
          rewrite: (path) => path.replace(/^\/crm/, '')
        }
      }
    }
  }
})
